#pragma once

#include "ThreadPool.h"
#include "File.h"

#include <utility>

#include "types.h"

class TaskLauncher {
public:

    typedef std::pair<FilePairType, AlgResultType> ResultType;

    TaskLauncher(size_t thread_count);
    
    std::future<ResultType> launch(std::function<ResultType(void)>); 
    
private:

    void validate(size_t thread_count) const; 

    ThreadPool pool_;
};
